package vip.xiaonuo.invoice.modular.service;

import vip.xiaonuo.invoice.modular.param.*;
import vip.xiaonuo.invoice.modular.vo.*;

/**
 * 发票服务接口
 *
 * @author AI Assistant
 */
public interface InvoiceService {

    /**
     * 开具电子发票
     *
     * @param param 开票请求参数
     * @return 异步开票结果
     */
    InvoiceSubmitResultVo createInvoice(InvoiceRequestParam param);

    /**
     * 重新开具电子发票
     *
     * @param reInvoiceRequestParam 开票请求参数
     * @return 异步开票结果
     */
    InvoiceSubmitResultVo reCreateInvoice(ReInvoiceRequestParam reInvoiceRequestParam);


    /**
     * 冲红发票
     *
     * @param redInvoiceRequestParam 发票ID
     * @return 冲红结果
     */
    RedInvoiceSubmitResultVo createRedInvoice(RedInvoiceRequestParam redInvoiceRequestParam);

    /**
     * 重新交付电子发票
     *
     * @param redeliverRequestParam 发票ID
     * @return 交付结果
     */
    RedeliverSubmitResultVo reDeliverInvoice(RedeliverRequestParam redeliverRequestParam);

    /**
     * 获取手机号验证码
     * @return 获取结果
     * @param getValidCodeRequestParam 纳税人识别号
     */
    GetValidSubmitResultVo getValidCode(GetValidCodeRequestParam getValidCodeRequestParam);

    /**
     * 提交手机号验证码
     *
     * @param commitValidCodeRequestParam 纳税人识别号和验证码
     * @return 提交结果
     */
    CommitValidSubmitResultVo commitValidCode(CommitValidCodeRequestParam commitValidCodeRequestParam);
}
